/* 413. 等差数列划分 */
/**
 * @param {number[]} nums
 * @return {number}
 */

/* 
    动态规划
    前面已经是等差数列f(n-1)，加上当前数字，如果也是等差数列的花，那么可以新增f(n-1) + 1
    个子数组 新增的这一个子数组(nums[n-2],nums[n-1],nums[n])
 */
var numberOfArithmeticSlices = function (nums) {
	const len = nums.length
	/* dp[i]:表示当前数字与前面的数字能构成的等差子数列数 */
	const dp = new Array(len).fill(0)
	let sum = 0
	for (let i = 1; i < len - 1; i++) {
		if (nums[i] - nums[i - 1] === nums[i + 1] - nums[i]) {
			dp[i + 1] = dp[i] + 1
			sum += dp[i + 1]
		}
	}
	return sum
}
/* 降维 */
var numberOfArithmeticSlices = function (nums) {
	const len = nums.length
	let [prev, sum] = [0, 0]
	for (let i = 1; i < len - 1; i++) {
		if (nums[i] - nums[i - 1] === nums[i + 1] - nums[i]) {
			prev += 1
			sum += prev
		} else {
			prev = 0
		}
	}

	return sum
}
